DEFINITION MODULE  Timer;

(*****************************************************************************)
(* Mit diesen Prozeduren lassen sich innerhalb von Programmen Zeiten messen. *)
(* Die Zeiteinheit ist die Millisekunde, die verwendeten Zeiten sind jedoch  *)
(* immer Vielfache von fuenf Millisekunden; eine einigermassen verlaessliche *)
(* Messung ist daher erst ab ungefaehr 50 ms moeglich ( Fehler < 10% ).      *)
(*                                                                           *)
(* Der mit "Start" in 'startzeit' zurueckgelieferte Wert hat nur interne Be- *)
(* deutung, darf jedoch nicht veraendert werden. Wird er bei Aufruf von      *)
(* "Stop" als Parameter wieder uebergeben, so liefert diese Prozedur die Zeit*)
(* in Millisekunden, die seit dem Aufruf von "Start" mit dieser Variablen    *)
(* vergangen ist; da der uebergebene Wert dabei nicht veraendert wird, kann  *)
(* zu einem spaeteren Zeitpunkt erneut die Zeit ausgelesen werden. Einmal    *)
(* durch "Start" gestartet, laeuft die Stoppuhr also ununterbrochen weiter.  *)
(*                                                                           *)
(* Durch Verwendung unterschiedlicher Variablen fuer 'startzeit' kann eine   *)
(* beliebige Anzahl Stoppuhren parallel laufen.                              *)
(* __________________________________________________________________________*)
(*  03-Mae-90 , Holger Kleinschmidt                                          *)
(*****************************************************************************)

  PROCEDURE  Start ((* -- /AUS *) VAR startzeit : LONGCARD );

  PROCEDURE  Stop ((* EIN/ -- *) startzeit : LONGCARD ): LONGCARD;

END  Timer.
